home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / OpenTransport / Interfaces / CIncludes / tihdr.h < prev   
Encoding:
C/C++ Source or Header  |  1996-11-21  |  13.1 KB  |  577 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        tihdr.h
  3.  
  4.     Copyright:    © 1992-1996 by Mentat Inc., all rights reserved.
  5.  
  6. */
  7.  
  8. #ifndef __TIHDR__
  9. #define __TIHDR__
  10.  
  11. #ifndef __OPENTRANSPORT__
  12. #include <OpenTransport.h>
  13. #endif
  14.  
  15. #if PRAGMA_ALIGN_SUPPORTED
  16. #pragma options align=mac68k
  17. #endif
  18.  
  19. /* User generated requests */
  20. #define T_BIND_REQ                101
  21. #define T_CONN_REQ                102        /* connection request */
  22. #define T_CONN_RES                103        /* respond to connection indication */
  23. #define T_DATA_REQ                104
  24. #define T_DISCON_REQ            105
  25. #define T_EXDATA_REQ            106
  26. #define T_INFO_REQ                107
  27. #define T_OPTMGMT_REQ            108
  28. #define T_ORDREL_REQ            109
  29. #define T_UNBIND_REQ            110
  30. #define T_UNITDATA_REQ            111
  31. #define T_ADDR_REQ                112        /* Get address request                */
  32. #define T_UREQUEST_REQ            113        /* UnitRequest (transaction) req    */
  33. #define T_REQUEST_REQ            114        /* Request (CO transaction) req        */
  34. #define T_UREPLY_REQ            115        /* UnitRequest (transaction) req    */
  35. #define T_REPLY_REQ                116        /* REPLY (CO transaction) req        */
  36. #define T_CANCELREQUEST_REQ        117        /* Cancel outgoing request            */
  37. #define T_CANCELREPLY_REQ        118        /* Cancel incoming request            */
  38. #define T_REGNAME_REQ            119        /* Request name registration        */
  39. #define T_DELNAME_REQ            120        /* Request delete name registration */
  40. #define T_LKUPNAME_REQ            121        /* Request name lookup              */
  41.  
  42. /* Transport generated indications and acknowledgements */
  43. #define T_BIND_ACK                122
  44. #define T_CONN_CON                123        /* connection confirmation             */
  45. #define T_CONN_IND                124        /* incoming connection indication     */
  46. #define T_DATA_IND                125
  47. #define T_DISCON_IND            126
  48. #define T_ERROR_ACK             127
  49. #define T_EXDATA_IND            128
  50. #define T_INFO_ACK                129
  51. #define T_OK_ACK                130
  52. #define T_OPTMGMT_ACK            131
  53. #define T_ORDREL_IND            132
  54. #define T_UNITDATA_IND            133
  55. #define T_UDERROR_IND            134
  56. #define T_ADDR_ACK                135        /* Get address ack                    */
  57. #define T_UREQUEST_IND            136        /* UnitRequest (transaction) ind    */
  58. #define T_REQUEST_IND            137        /* Request (CO transaction) ind     */
  59. #define T_UREPLY_IND            138        /* Incoming unit reply                */
  60. #define T_REPLY_IND                139        /* Incoming reply                    */
  61. #define T_UREPLY_ACK            140        /* outgoing Unit Reply is complete    */
  62. #define T_REPLY_ACK                141        /* outgoing Reply is complete        */
  63. #define T_RESOLVEADDR_REQ        142
  64. #define T_RESOLVEADDR_ACK        143
  65.  
  66. #define T_LKUPNAME_CON            146        /* Results of name lookup           */
  67. #define T_LKUPNAME_RES            147        /* Partial results of name lookup    */
  68. #define T_REGNAME_ACK            148        /* Request name registration        */
  69. #define T_SEQUENCED_ACK            149        /* Sequenced version of OK or ERROR ACK */
  70.  
  71. #define T_EVENT_IND                160        /* Miscellaneous event Indication        */
  72.  
  73. /* State values */
  74. #define TS_UNBND                1
  75. #define TS_WACK_BREQ            2
  76. #define TS_WACK_UREQ            3
  77. #define TS_IDLE                 4
  78. #define TS_WACK_OPTREQ            5
  79. #define TS_WACK_CREQ            6
  80. #define TS_WCON_CREQ            7
  81. #define TS_WRES_CIND            8
  82. #define TS_WACK_CRES            9
  83. #define TS_DATA_XFER            10
  84. #define TS_WIND_ORDREL            11
  85. #define TS_WREQ_ORDREL            12
  86. #define TS_WACK_DREQ6            13
  87. #define TS_WACK_DREQ7            14
  88. #define TS_WACK_DREQ9            15
  89. #define TS_WACK_DREQ10            16
  90. #define TS_WACK_DREQ11            17
  91. #define TS_WACK_ORDREL            18
  92. #define TS_NOSTATES             19
  93. #define TS_BAD_STATE            19
  94.  
  95. /* Transport events */
  96. #define TE_OPENED                1
  97. #define TE_BIND                 2
  98. #define TE_OPTMGMT                3
  99. #define TE_UNBIND                4
  100. #define TE_CLOSED                5
  101. #define TE_CONNECT1             6
  102. #define TE_CONNECT2             7
  103. #define TE_ACCEPT1                8
  104. #define TE_ACCEPT2                9
  105. #define TE_ACCEPT3                10
  106. #define TE_SND                    11
  107. #define TE_SNDDIS1                12
  108. #define TE_SNDDIS2                13
  109. #define TE_SNDREL                14
  110. #define TE_SNDUDATA             15
  111. #define TE_LISTEN                16
  112. #define TE_RCVCONNECT            17
  113. #define TE_RCV                    18
  114. #define TE_RCVDIS1                19
  115. #define TE_RCVDIS2                20
  116. #define TE_RCVDIS3                21
  117. #define TE_RCVREL                22
  118. #define TE_RCVUDATA             23
  119. #define TE_RCVUDERR             24
  120. #define TE_PASS_CONN            25
  121. #define TE_BAD_EVENT            26
  122.  
  123. typedef struct T_addr_ack
  124. {
  125.     long    PRIM_type;        /* Always T_ADDR_ACK */
  126.     long    LOCADDR_length;
  127.     long    LOCADDR_offset;
  128.     long    REMADDR_length;
  129.     long    REMADDR_offset;
  130. } T_addr_ack;
  131.  
  132. typedef struct T_addr_req
  133. {
  134.     long    PRIM_type;        /* Always T_ADDR_REQ */
  135. } T_addr_req;
  136.  
  137. typedef struct T_bind_ack 
  138. {
  139.     long    PRIM_type;        /* always T_BIND_ACK */
  140.     long    ADDR_length;
  141.     long    ADDR_offset;
  142.     unsigned long    CONIND_number;
  143. } T_bind_ack;
  144.  
  145. typedef struct T_bind_req 
  146. {
  147.     long    PRIM_type;        /* always T_BIND_REQ */
  148.     long    ADDR_length;
  149.     long    ADDR_offset;
  150.     unsigned long    CONIND_number;
  151. } T_bind_req;
  152.  
  153. typedef struct T_conn_con 
  154. {
  155.     long    PRIM_type;        /* always T_CONN_CON */
  156.     long    RES_length;     /* responding address length */
  157.     long    RES_offset;
  158.     long    OPT_length;
  159.     long    OPT_offset;
  160. } T_conn_con;
  161.  
  162. typedef struct T_conn_ind 
  163. {
  164.     long    PRIM_type;        /* always T_CONN_IND */
  165.     long    SRC_length;
  166.     long    SRC_offset;
  167.     long    OPT_length;
  168.     long    OPT_offset;
  169.     long    SEQ_number;
  170. } T_conn_ind;
  171.  
  172. typedef struct T_conn_req 
  173. {
  174.     long    PRIM_type;        /* always T_CONN_REQ */
  175.     long    DEST_length;
  176.     long    DEST_offset;
  177.     long    OPT_length;
  178.     long    OPT_offset;
  179. } T_conn_req;
  180.  
  181. typedef struct T_conn_res 
  182. {
  183.     long    PRIM_type;        /* always T_CONN_RES */
  184.     struct queue* QUEUE_ptr;
  185.     long    OPT_length;
  186.     long    OPT_offset;
  187.     long    SEQ_number;
  188. } T_conn_res;
  189.  
  190. typedef struct T_data_ind 
  191. {
  192.     long    PRIM_type;        /* always T_DATA_IND */
  193.     long    MORE_flag;
  194. } T_data_ind;
  195.  
  196. typedef struct T_data_req 
  197. {
  198.     long    PRIM_type;        /* always T_DATA_REQ */
  199.     long    MORE_flag;
  200. } T_data_req;
  201.  
  202. typedef struct T_discon_ind 
  203. {
  204.     long    PRIM_type;        /* always T_DISCON_IND */
  205.     long    DISCON_reason;
  206.     long    SEQ_number;
  207. } T_discon_ind;
  208.  
  209. typedef struct T_discon_req 
  210. {
  211.     long    PRIM_type;        /* always T_DISCON_REQ */
  212.     long    SEQ_number;
  213. } T_discon_req;
  214.  
  215. typedef struct T_exdata_ind 
  216. {
  217.     long    PRIM_type;        /* always T_EXDATA_IND */
  218.     long    MORE_flag;
  219. } T_exdata_ind;
  220.  
  221. typedef struct T_exdata_req 
  222. {
  223.     long    PRIM_type;        /* always T_EXDATA_REQ */
  224.     long    MORE_flag;
  225. } T_exdata_req;
  226.  
  227. typedef struct T_error_ack 
  228. {
  229.     long    PRIM_type;        /* always T_ERROR_ACK */
  230.     long    ERROR_prim;     /* primitive in error */
  231.     long    TLI_error;
  232.     long    UNIX_error;
  233. } T_error_ack;
  234.  
  235. typedef struct T_info_ack 
  236. {
  237.     long    PRIM_type;        /* always T_INFO_ACK */
  238.     long    TSDU_size;        /* max TSDU size */
  239.     long    ETSDU_size;     /* max ETSDU size */
  240.     long    CDATA_size;     /* connect data size */
  241.     long    DDATA_size;     /* disconnect data size */
  242.     long    ADDR_size;        /* TSAP size */
  243.     long    OPT_size;        /* options size */
  244.     long    TIDU_size;        /* TIDU size */
  245.     long    SERV_type;        /* service type */
  246.     long    CURRENT_state;    /* current state */
  247.     long    PROVIDER_flag;    /* provider flags (see xti.h for defines) */
  248. } T_info_ack;
  249.  
  250. /* Provider flags */
  251. #define SENDZERO        0x001   /* supports 0-length TSDU's */
  252. #define XPG4_1          0x002   /* provider supports recent stuff */
  253.  
  254. typedef struct T_info_req 
  255. {
  256.     long    PRIM_type;        /* always T_INFO_REQ */
  257. } T_info_req;
  258.  
  259. typedef struct T_ok_ack 
  260. {
  261.     long    PRIM_type;        /* always T_OK_ACK */
  262.     long    CORRECT_prim;
  263. } T_ok_ack;
  264.  
  265. typedef struct T_optmgmt_ack 
  266. {
  267.     long    PRIM_type;        /* always T_OPTMGMT_ACK */
  268.     long    OPT_length;
  269.     long    OPT_offset;
  270.     long    MGMT_flags;
  271. } T_optmgmt_ack;
  272.  
  273. typedef struct T_optmgmt_req 
  274. {
  275.     long    PRIM_type;        /* always T_OPTMGMT_REQ */
  276.     long    OPT_length;
  277.     long    OPT_offset;
  278.     long    MGMT_flags;
  279. } T_optmgmt_req;
  280.  
  281. typedef struct T_ordrel_ind 
  282. {
  283.     long    PRIM_type;        /* always T_ORDREL_IND */
  284. } T_ordrel_ind;
  285.  
  286. typedef struct T_ordrel_req 
  287. {
  288.     long    PRIM_type;        /* always T_ORDREL_REQ */
  289. } T_ordrel_req;
  290.  
  291. typedef struct T_unbind_req 
  292. {
  293.     long    PRIM_type;        /* always T_UNBIND_REQ */
  294. } T_unbind_req;
  295.  
  296. typedef struct T_uderror_ind 
  297. {
  298.     long    PRIM_type;        /* always T_UDERROR_IND */
  299.     long    DEST_length;
  300.     long    DEST_offset;
  301.     long    OPT_length;
  302.     long    OPT_offset;
  303.     long    ERROR_type;
  304. } T_uderror_ind;
  305.  
  306. typedef struct T_unitdata_ind 
  307. {
  308.     long    PRIM_type;        /* always T_UNITDATA_IND */
  309.     long    SRC_length;
  310.     long    SRC_offset;
  311.     long    OPT_length;
  312.     long    OPT_offset;
  313. } T_unitdata_ind;
  314.  
  315. typedef struct T_unitdata_req 
  316. {
  317.     long    PRIM_type;        /* always T_UNITDATA_REQ */
  318.     long    DEST_length;
  319.     long    DEST_offset;
  320.     long    OPT_length;
  321.     long    OPT_offset;
  322. } T_unitdata_req;
  323.  
  324. typedef struct T_resolveaddr_ack 
  325. {
  326.     long    PRIM_type;        /* always T_RESOLVEADDR_ACK */
  327.     long    SEQ_number;
  328.     long    ADDR_length;
  329.     long    ADDR_offset;
  330.     long    ORIG_client;
  331.     long    ORIG_data;
  332.     long    TLI_error;
  333.     long    UNIX_error;
  334. } T_resolveaddr_ack;
  335.  
  336. typedef struct T_resolveaddr_req 
  337. {
  338.     long    PRIM_type;        /* always T_RESOLVEADDR_REQ */
  339.     long    SEQ_number;
  340.     long    ADDR_length;
  341.     long    ADDR_offset;
  342.     long    ORIG_client;
  343.     long    ORIG_data;
  344.     long    MAX_milliseconds;
  345. } T_resolveaddr_req;
  346.  
  347. typedef struct T_unitreply_ind
  348. {
  349.     long    PRIM_type;        /* Always T_UREPLY_IND */
  350.     long    SEQ_number;
  351.     long    OPT_length;
  352.     long    OPT_offset;
  353.     long    REP_flags;
  354.     long    TLI_error;
  355.     long    UNIX_error;
  356. } T_unitreply_ind;
  357.  
  358. typedef struct T_unitrequest_ind
  359. {
  360.     long    PRIM_type;        /* Always T_UREQUEST_IND */
  361.     long    SEQ_number;
  362.     long    SRC_length;
  363.     long    SRC_offset;
  364.     long    OPT_length;
  365.     long    OPT_offset;
  366.     long    REQ_flags;
  367. } T_unitrequest_ind;
  368.  
  369. typedef struct T_unitrequest_req
  370. {
  371.     long    PRIM_type;        /* Always T_UREQUEST_REQ */
  372.     long    SEQ_number;
  373.     long    DEST_length;
  374.     long    DEST_offset;
  375.     long    OPT_length;
  376.     long    OPT_offset;
  377.     long    REQ_flags;
  378. } T_unitrequest_req;
  379.  
  380. typedef struct T_unitreply_req
  381. {
  382.     long    PRIM_type;        /* Always T_UREPLY_REQ */
  383.     long    SEQ_number;
  384.     long    OPT_length;
  385.     long    OPT_offset;
  386.     long    REP_flags;
  387. } T_unitreply_req;
  388.  
  389. typedef struct T_unitreply_ack
  390. {
  391.     long    PRIM_type;        /* Always T_UREPLY_ACK */
  392.     long    SEQ_number;
  393.     long    TLI_error;
  394.     long    UNIX_error;
  395. } T_unitreply_ack;
  396.  
  397. typedef struct T_cancelrequest_req
  398. {
  399.     long    PRIM_type;        /* Always T_CANCELREQUEST_REQ */
  400.     long    SEQ_number;
  401. } T_cancelrequest_req;
  402.  
  403. typedef struct T_cancelreply_req
  404. {
  405.     long    PRIM_type;        /* Always T_CANCELREPLY_REQ */
  406.     long    SEQ_number;
  407. } T_cancelreply_req;
  408.  
  409. typedef struct T_reply_ind
  410. {
  411.     long    PRIM_type;        /* Always T_REPLY_IND */
  412.     long    SEQ_number;
  413.     long    OPT_length;
  414.     long    OPT_offset;
  415.     long    REP_flags;
  416.     long    TLI_error;
  417.     long    UNIX_error;
  418. } T_reply_ind;
  419.  
  420. typedef struct T_request_ind
  421. {
  422.     long    PRIM_type;        /* Always T_REQUEST_IND */
  423.     long    SEQ_number;
  424.     long    OPT_length;
  425.     long    OPT_offset;
  426.     long    REQ_flags;
  427. } T_request_ind;
  428.  
  429. typedef struct T_request_req
  430. {
  431.     long    PRIM_type;        /* Always T_REQUEST_REQ */
  432.     long    SEQ_number;
  433.     long    OPT_length;
  434.     long    OPT_offset;
  435.     long    REQ_flags;
  436. } T_request_req;
  437.  
  438. typedef struct T_reply_req
  439. {
  440.     long    PRIM_type;        /* Always T_REPLY_REQ */
  441.     long    SEQ_number;
  442.     long    OPT_length;
  443.     long    OPT_offset;
  444.     long    REP_flags;
  445. } T_reply_req;
  446.  
  447. typedef struct T_reply_ack
  448. {
  449.     long    PRIM_type;        /* Always T_REPLY_ACK */
  450.     long    SEQ_number;
  451.     long    TLI_error;
  452.     long    UNIX_error;
  453. } T_reply_ack;
  454.  
  455. typedef struct T_regname_req
  456. {
  457.     long    PRIM_type;        /* Always T_REGNAME_REQ */
  458.     long    SEQ_number;        /* Reply is sequence ack */
  459.     long    NAME_length;
  460.     long    NAME_offset;
  461.     long    ADDR_length;
  462.     long    ADDR_offset;
  463.     long    REQ_flags;
  464. } T_regname_req;
  465.  
  466. typedef struct T_regname_ack 
  467. {
  468.     long    PRIM_type;        /* always T_REGNAME_ACK        */
  469.     long    SEQ_number;
  470.     long    REG_id;
  471.     long    ADDR_length;
  472.     long    ADDR_offset;
  473. } T_regname_ack;
  474.  
  475. typedef struct T_delname_req
  476. {
  477.     long    PRIM_type;        /* Always T_DELNAME_REQ */
  478.     long    SEQ_number;        /* Reply is sequence ack */
  479.     long    NAME_length;
  480.     long    NAME_offset;
  481. } T_delname_req;
  482.  
  483. typedef struct T_lkupname_req
  484. {
  485.     long    PRIM_type;        /* Always T_LKUPNAME_REQ */
  486.     long    SEQ_number;        /* Reply is sequence ack */
  487.     long    NAME_length;    /* ... or T_LKUPNAME_CON */
  488.     long    NAME_offset;
  489.     long    ADDR_length;
  490.     long    ADDR_offset;
  491.     long    MAX_number;
  492.     long    MAX_milliseconds;
  493.     long    REQ_flags;
  494. } T_lkupname_req;
  495.  
  496. typedef struct T_lkupname_con 
  497. {
  498.     long    PRIM_type;        /* Either T_LKUPNAME_CON */
  499.     long    SEQ_number;        /* Or T_LKUPNAME_RES */
  500.     long    NAME_length;
  501.     long    NAME_offset;
  502.     long    RSP_count;
  503.     long    RSP_cumcount;
  504. } T_lkupname_con;
  505.  
  506. typedef struct T_sequence_ack 
  507. {
  508.     long    PRIM_type;        /* always T_SEQUENCED_ACK        */
  509.     long    ORIG_prim;         /* original primitive            */
  510.     long    SEQ_number;
  511.     long    TLI_error;
  512.     long    UNIX_error;
  513. } T_sequence_ack;
  514.  
  515. typedef struct T_event_ind 
  516. {
  517.     long    PRIM_type;        /* always T_EVENT_IND            */
  518.     long    EVENT_code;
  519.     long    EVENT_cookie;
  520. } T_event_ind;
  521.  
  522. union T_primitives 
  523. {
  524.     long                        type;
  525.     struct T_addr_ack            taddrack;
  526.     struct T_bind_ack            tbindack;
  527.     struct T_bind_req            tbindreq;
  528.     struct T_conn_con            tconncon;
  529.     struct T_conn_ind            tconnind;
  530.     struct T_conn_req            tconnreq;
  531.     struct T_conn_res            tconnres;
  532.     struct T_data_ind            tdataind;
  533.     struct T_data_req            tdatareq;
  534.     struct T_discon_ind         tdisconind;
  535.     struct T_discon_req         tdisconreq;
  536.     struct T_exdata_ind         texdataind;
  537.     struct T_exdata_req         texdatareq;
  538.     struct T_error_ack            terrorack;
  539.     struct T_info_ack            tinfoack;
  540.     struct T_info_req            tinforeq;
  541.     struct T_ok_ack             tokack;
  542.     struct T_optmgmt_ack        toptmgmtack;
  543.     struct T_optmgmt_req        toptmgmtreq;
  544.     struct T_ordrel_ind         tordrelind;
  545.     struct T_ordrel_req         tordrelreq;
  546.     struct T_unbind_req         tunbindreq;
  547.     struct T_uderror_ind        tuderrorind;
  548.     struct T_unitdata_ind        tunitdataind;
  549.     struct T_unitdata_req        tunitdatareq;
  550.     struct T_unitreply_ind        tunitreplyind;
  551.     struct T_unitrequest_ind    tunitrequestind;
  552.     struct T_unitrequest_req    tunitrequestreq;
  553.     struct T_unitreply_req        tunitreplyreq;
  554.     struct T_unitreply_ack        tunitreplyack;
  555.     struct T_reply_ind            treplyind;
  556.     struct T_request_ind        trequestind;
  557.     struct T_request_req        trequestreq;
  558.     struct T_reply_req            treplyreq;
  559.     struct T_reply_ack            treplyack;
  560.     struct T_cancelrequest_req    tcancelreqreq;
  561.     struct T_resolveaddr_req    tresolvereq;
  562.     struct T_resolveaddr_ack    tresolveack;
  563.     struct T_regname_req        tregnamereq;
  564.     struct T_regname_ack        tregnameack;
  565.     struct T_delname_req        tdelnamereq;
  566.     struct T_lkupname_req        tlkupnamereq;
  567.     struct T_lkupname_con        tlkupnamecon;
  568.     struct T_sequence_ack        tsequenceack;
  569.     struct T_event_ind            teventind;
  570. };
  571.  
  572. #if PRAGMA_ALIGN_SUPPORTED
  573. #pragma options align=reset
  574. #endif
  575.  
  576. #endif
  577.